package ooday03;

public class LiLun {
    /*
    抽象类和接口
        抽象方法
            1.由abstract修饰
            2.只有方法的定义，没有具体的实现（连{}都没有）
        抽象类
            设计规则
                适合初学者：共3点
                    1.将派生类共有的属性和行为，抽到超类中 ---------抽共性
                    2.若派生类的行为/代码都一样，设计普通方法
                      若派生类的行为/代码不一样，设计抽象方法
            包含抽象方法的类必须是抽象类
            抽象类由abstract修饰
            抽象类不能被实例化（new对象） ---------单独存在没有意义
            抽象类是需要被继承的，派生类：
                1.也声明为抽象类 ----------一般不这么用
                2.必须重写所有抽象方法 --------变不完整为完整
            设计抽象方法的原因
                真实的项目都是团队协作完成的
                    1.假设不设计抽象方法：
                        1)张光设计Dog类，吃的方法名称为eat()
                        2)李林设计Chick类，吃的方法名为eating()
                        3)赵亮设计Fish类，吃的方法名称为ate()
                        4)孙七想让动物们吃饭 ---需要记3个名字，还得与动物对应好 —>麻烦
                    2.假设设计抽象方法eat表示吃：
                        1)张光设计Dog类，吃的方法只能叫eat(),必须重写
                        2)李林设计Chick类，吃的方法只能叫eat()，必须重写
                        3)赵亮设计Fish类，吃的方法只能叫eat()，必须重写
                        4)孙七想让动物们吃饭 ---需要记1个名字，不用区分动物 —>方便
             抽象类的意义
                封装共有的属性和行为 -------实现代码复用
                可以包含抽象方法：
                    1.为派生类提供统一的入口（名字统一）
                    2.强制必须重写
     */
    /*
    不包含抽象方法的类，也可以声明为抽象类 -----------我乐意
        abstract class Aoo{
            int a;
            void show(){
            }
        }
     */

    /*
    接口
        设计规则
            适合初学者：共3点
                1.将所有派生类共有的属性和行为，抽到超类中 ---------抽共性
                2.若派生类的行为/代码都一样，设计普通方法
                  若派生类的行为/代码不一样，设计抽象方法
                3.将部分派生类共有的行为，抽到接口中
        接口的应用
            在现有案例基础之上，添加如下需求：
                1)狗会游泳
                2)鱼会游泳
                3)鸡不会游泳
            1.接口是对继承单根性的扩展 ---------实现多继承
            2.接口是一种标准、规范，表述具备某种功能
              实现了某接口就具备某个功能，不实现接口就不具备那个功能

        接口的语法
            接口是一种引用数据类型
            由interface定义
            目前内容而言，只能包含抽象方法（常量、默认方法、静态方法、私有方法）
            接口不能被实例化（new对象）
            接口是需要被实现的，实现类必须重写接口中的所有抽象方法
                注意：重写接口中的方法时，必须加public(先记住)
        接口的特点
            一个类可以实现多个接口，以逗号分隔
            若有继承又实现，必须先继承后实现
            接口可以继承接口

     */


}












